\chapter{Pr\'esentation du sujet}

\section{Le projet \Yuukou}

\begin{figure}[!ht]
	\centering
	\includegraphics[scale=1]{yuukouLogo.jpg}

\end{figure}

\subsection{Pr\'esentation}

Le terme Yuukou comme abord\'e dans l'introduction de ce rapport, vient du japonais \Yuukou{} et signifie validit\'e, disponibilit\'e, efficacit\'e.
C'est un syst\`eme permettant la r\'ecup\'eration des informations depuis les serveurs LDAP\protect\footnote{\textit{Lightweight Directory Access Protocol}}$^*$ de l'Universit\'e afin de comprendre et construire l'infrastructure des ressources et ainsi de voir sa facilit\'e d'utilisation. 
L'architecture du syst\`eme utilise un processus d'apprentissage simple pour d\'eduire et maintenir la structure \`a jour avec un minimum de r\'eglages initiaux.
\Yuukou{} a \'et\'e cr\'e\'e pour montrer l'utilisation des salles informatiques et conserver un historique des informations sur le campus de New Cavendish.

\subsection{Fonctionnement}

Le but principal de \Yuukou{} est d'afficher l'occupation des salles informatiques en se rapprochant autant que possible du comportement d'un syst\`eme fonctionnant en temps r\'eel.
Pour ce faire, l'application a \'et\'e divis\'ee en deux parties  comme le montre la figure~\ref{figure:yuukouFonctionnement}.

\clearpage

\begin{figure}[!ht]
	\centering
	\includegraphics[scale=0.75]{yuukouFonctionnement.jpg}
	\caption{Architecture de \Yuukou}
	\label{figure:yuukouFonctionnement}

\end{figure}

\subsubsection{Premi\`ere partie}

La premi\`ere partie est un programme \'ecrit en Perl$^*$ qui r\'ecup\`ere les informations de connexion des utilisateurs depuis un serveur LDAP$^*$ et qui se charge de construire, modifier ou mettre \`a jour l'architecture r\'eseau de l'Universit\'e tout en stockant les informations dans une base de donn\'ees relationnelle de type MySQL.

Le robot de \Yuukou{} offre deux fonctionnalit\'es : il permet de mettre \`a jour les donn\'ees de connexion \textit{via} le serveur LDAP$^*$ toutes les cinq minutes environ pour une utilisation normale, et de mettre \`a jour le statut des ressources (ordinateurs) toutes les demi-heures, l\`a aussi pour une utilisation normale.

\subsubsection{Deuxi\`eme partie}

La seconde partie est un ensemble de pages Web \'ecrites en PHP\protect\footnote{\textit{Personal Home Page} ou \textit{PHP: Hypertext Preprocessor}}$^*$ et h\'eberg\'ees sur un serveur Web permettant de pr\'esenter les donn\'ees collect\'ees \`a l'utilisateur final.
Ces pages sont de deux types : les pages publiques et les pages priv\'ees.

Les pages publiques sont accessibles par tous les utilisateurs de l'Universit\'e le d\'esirant.
Les pages priv\'ees, quant \`a elles, ne sont accessibles qu'aux administrateurs.

\subsubsection{Les pages publiques}

\noindent Les pages publiques permettent l'affichage des pages suivantes :

\begin{itemize}
	\item une page contenant tous les campus et salles informatiques actuellement utilis\'ees;
	\item une page par campus avec les salles informatiques actuellement utilis\'ees;
	\item une page par campus et d\'epartement avec les salles informatiques actuellement utilis\'ees.

\end{itemize}

\vspace{0.20cm}

Les pages publiques offrent une vision g\'en\'erale de chaque salle : le nombre de ressources totales, disponibles, occup\'ees par un utilisateur et dans un \'etat inconnu.
Il est \`a noter que chacunes des pr\'ec\'edentes pages peut \^etre affich\'ees sur un \'ecran plasma pr\'esent dans les diff\'erents b\^atiments de l'Universit\'e.
La figure~\ref{figure:yuukouPublic} donne un exemple de page publique.

\subsubsection{Les pages priv\'ees}

\noindent Les pages priv\'ees permettent l'affichage des pages suivantes :

\begin{itemize}
	\item une page d'identification \textit{via} LDAP$^*$ pour l'administrateur;
	\item toutes les pages publiques mais b\'en\'eficiant de fonctionnalit\'es suppl\'ementaires :

	\begin{itemize}
		\item liste des ressources \'eteintes;
		\item une fen\^etre permettant d'avoir des informations sur un utilisateur actuellement connect\'e \`a une ressource (identifiant, nom, photo, heure de connexion et dur\'ee de la session);
		\item possibilit\'e d'ajouter des commentaires sur les utilisateurs;
		\item liens vers les statistiques des salles informatiques.

	\end{itemize}

\end{itemize}

\vspace{0.20cm}

La figure~\ref{figure:yuukouAdmin} donne un exemple des fonctionnalit\'es suppl\'ementaires auxquelles un administrateur a acc\`es.

\clearpage

\subsubsection{Vue sur le produit}

\begin{figure}[!ht]
	\centering
	\includegraphics[scale=0.75]{yuukouPublic.jpg}
	\caption{Exemple de page publique de \Yuukou{} rep\'esentant un campus et l'utilisation des salles informatiques d'un d\'epartement}
	\label{figure:yuukouPublic}

\end{figure}

\begin{figure}[!ht]
	\centering
	\includegraphics[scale=0.75]{yuukouAdmin.jpg}
	\caption{Exemple de page priv\'ee de \Yuukou{} montrant en particulier les donn\'ees d'un utilisateur}
	\label{figure:yuukouAdmin}

\end{figure}

\subsection{Quelques chiffres}

Le projet \Yuukou{} permet de surveiller le r\'eseau du campus de New Cavendish soit 43 salles informatiques, ce qui repr\'esente 661 PC. 
Le support des Macintosh n'\'etant pas pris en compte.

\subsection{Changement vers \YuukouII}

L'Universit\'e souhaite reprendre le principe du projet \Yuukou, cependant elle est confront\'ee \`a diff\'erents probl\`emes.
Le premier \'etant que les personnes ayant d\'evelopp\'e le projet ont quitt\'e l'Universit\'e. 
Ce qui signifierait, pour la personne ou l'\'equipe qui serait en charge de reprendre le projet, de prendre du temps pour se former \`a Perl$^*$, comprendre tout ce qui a \'et\'e d\'ej\`a r\'ealis\'e et ensuite seulement, commencer \`a d\'evelopper.
Actuellement de nombreux projets sont en cours et il n'est pas possible pour une \'equipe de passer du temps sur l'existant.

Un autre probl\`eme est les changements importants, du point de vue infrastructure, qui sont en train d'\^etre mis en place.
En effet, l'Universit\'e qui utilisait eDirectory$^*$ de Novell pour g\'erer ses annuaires LDAP$^*$ a commenc\'e \`a migrer toutes ses donn\'ees vers le syst\`eme Active Directory$^*$ de Microsoft qui est cens\'e \^etre plus efficace. Ce changement rendrait \Yuukou{} obsol\`ete.

Point suivant, la volont\'e de donner acc\`es aux informations sur les salles, pas seulement en utilisant un navigateur Internet, mais aussi et surtout en utilisant un \textit{smartphone} (IPhone ou autre par exemple) ou une tablette (IPad par exemple), chose que l'ancien logiciel ne peut pas fournir.
De ce fait, un \'etudiant aurait \`a tout moment les informations sur les salles \textit{via} son \textit{smartphone} ou sa tablette, si tant est qu'il ait l'un ou l'autre.

\noindent \`A ces pr\'ec\'edents probl\`emes, d'autres viennent s'ajouter :

\begin{itemize}
	\item les Macintosh ne sont pas pris en compte;
	\item le logiciel est assez monolithique, il deviendrait donc tr\`es difficile et complexe de vouloir l'\'etendre;
	\item {\Yuukou} ne prend en compte que les donn\'ees en temps r\'eel et ne garde pas un historique;
	\item son utilisation pr\^ete \`a confusion car il n'a aucun interfa\c{c}age avec l'emploi du temps, de ce fait, quand une salle est pr\'esent\'ee comme libre, il n'y a aucun moyen, avec le logiciel, de savoir si un cours s'y d\'eroule ou non.

\end{itemize}

\vspace{0.20cm}

C'est en consid\'erant tous ces points qu'il a \'et\'e d\'ecid\'e d'abandonner le projet \Yuukou{} afin de pouvoir mettre en place \YuukouII{} qui r\'epondrait aux attentes de l'Universit\'e.

\section{Le projet \YuukouII}

{\YuukouII} a pour but de combler les lacunes de {\Yuukou} et d'aller plus loin en termes de fonctionnalit\'es qu'il peut offrir. 
Le projet sera tout d'abord pr\'esent\'e avec les principaux points le composant.
Ensuite seront abord\'ees les diff\'erentes r\'eflexions que les \'equipes int\'eress\'es par le projet ont effectu\'ees.
Ces r\'eflexions donneront lieu aux premi\`eres id\'ees qui en ont \'emerg\'ees.
Enfin, les principales contraintes techniques du projet seront d\'ecrites.

\subsection{Pr\'esentation du projet}

Dans son fonctionnement g\'en\'eral, {\YuukouII} doit permettre de donner \`a un \'etudiant ou toute personne travaillant \`a l'Universit\'e et cherchant \`a utiliser un ordinateur, une vue globale des ressources qui sont disponibles actuellement.
Les donn\'ees devant \^etre bien s\^ur exactes afin que la personne n'ait pas de mauvaise surprise en se rendant dans une salle qu'elle pensait libre.
L'affichage pourra se faire \textit{via} un \textit{smartphone}, une tablette ou encore un navigateur Internet.

\noindent Le but du stage est : 

\begin{itemize}
	\item la conception d'un logiciel permettant la r\'ecup\'eration de donn\'ees concernant les connexions sur les diff\'erentes ressources de l'Universit\'e et cela en temps r\'eel;
	\item la gestion de la persistance de ces donn\'ees;
	\item la cr\'eation d'un maximum de fonctionnalit\'es retournant les informations utiles dans le but d'\^etre exploit\'ees pour l'affichage sur les diff\'erents supports.

\end{itemize} 

\vspace{0.20cm}

La cr\'eation d'applications permettant l'affichage des r\'esultats ne fait pas partie de ce sujet de stage. 
Ici, seule la partie r\'ecup\'eration, stockage et retour des donn\'ees est abord\'ee.

\subsection{R\'eflexions de l'\'equipe technique}

Diff\'erents acteurs de l'Universit\'e int\'eress\'es dans le projet \YuukouII{} ont commenc\'e \`a fixer une liste des fonctionnalit\'es qu'ils aimeraient voir avec l'application finale.

\subsubsection{Concernant les ressources}

\begin{itemize}
	\item Macintosh et Windows;
	\item conna\^itre l'\'etat de la ressource, \'eventuellement la d\'emarrer \`a distance (WOL\protect\footnote{\textit{Wake On Lan}}$^*$);
	\item inclure une surveillance partielle du mat\'eriel et des logiciels;
	\item utilisation des services d'Active Directory$^*$.

\end{itemize}

\subsubsection{Concernant les donn\'ees r\'ecup\'er\'ees}

\begin{itemize}
	\item mettre au point un formalisme avec les autres services de l'Universit\'e concernant les informations sur les salles, campus et d\'epartements;
	\item stocker les informations dans une base de donn\'ees SQL\protect\footnote{\textit{Structured Query Language}}$^*$;
	\item mettre en place des outils pour g\'en\'erer des statistiques \`a partir des donn\'ees stock\'ees (utilisation d'une salle, nombre de connexions par jour dans un mois pour une salle, \ldots).

\end{itemize}

\subsubsection{Concernant les donn\'ees retourn\'ees}

\begin{itemize}
	\item g\'en\'eration de flux RSS\protect\footnote{\textit{Rich Site Summary}}$^*$ pour retourner des informations;
	\item l'affichage doit \^etre en temps r\'eel et doit aussi permettre d'avoir une vue globale dans le temps : utilisation des emplois du temps pour savoir quelle salle est libre et \`a quel moment.

\end{itemize}

\vspace{0.20cm}

Cette liste n'est pas compl\`ete \'etant donn\'e qu'elle ne prend pas en compte la partie \og{}affichage\fg{} des r\'esultats du fait que le projet ne consiste qu'\`a la r\'ecup\'eration, au traitement et au retour de donn\'ees.

L'id\'ee initiale \'etait de d\'evelopper un projet pilote qui permettrait d'avoir une vue sur ce qu'il est possible de faire et sur la fa\c{c}on de le faire.
Il serait ensuite repris par les \'equipes de l'Universit\'e pour \^etre termin\'e.
Ce projet consisterait en la cr\'eation d'un service Web (la notion sera expliqu\'ee plus en d\'etail au \S~\ref{section:serviceWeb}) \'ecrit en C\# et utilisant le \textit{framework}$^*$ .Net de Microsoft.
Le service Web devra offrir un maximum de fonctionnalit\'es et \^etre exploit\'e par une application mobile pour \textit{smartphone} et par un site Web pouvant \^etre projet\'e sur les \'ecrans plasma \`a l'entr\'ee de chaque site.

Cependant, apr\`es r\'eflexion avec M. Thierry DELAITRE, la structure, les objectifs et le projet en g\'en\'eral ont \'et\'e revus.
Dans l'id\'ee initiale, pour conna\^itre l'\'etat d'une ressource, si elle est \'eteinte ou allum\'ee par exemple, il aurait fallu interroger Active Directory$^*$. 
De plus, n'est connu que l'\'etat si un utilisateur est connect\'e.
Il faudrait des traitements suppl\'ementaires pour pouvoir fixer pr\'ecisement l'\'etat d'une ressource, avec un \textit{ping} par exemple pour savoir si la ressource est \'eteinte ou non.

\subsection{Premi\`eres approches}

Une solution simple, rapide et fonctionnelle avait d\'ej\`a \'et\'e mise en place afin de \og{}monitorer\fg{}, \cad{} surveiller le fonctionnement des diff\'erentes ressources de certaines salles dans l'Universit\'e.
Nagios est une application permettant d'effectuer une surveillance syst\`eme et r\'eseau.
Il permet de conna\^itre l'\'etat d'une machine ainsi que d'autres informations comme le syst\`eme d'exploitation utilis\'e, la version de Java install\'ee, la charge du processeur, \ldots

En partant de ce logiciel, le projet consiste en la r\'ecup\'eration des donn\'ees de Nagios, leur traitement et le d\'eveloppement des fonctionnalit\'es permettant \`a une application ext\'erieure de pouvoir afficher les informations.

\noindent Les objectifs principaux deviennent les suivants :

\begin{itemize}
	\item cr\'eation d'un service Web en utilisant l'API\protect\footnote{\textit{Application Programming Interface}}$^*$ Java JAX-WS\protect\footnote{\textit{Java API for XML Web Services}};
	\item mise en place d'une m\'ethode de communication avec Nagios;
	\item cr\'eation de la base de donn\'ees permettant l'archivage;
	\item mise en place d'un cycle permettant de traiter les informations r\'ecup\'er\'ees;
	\item d\'efinition de fonctions utiles pour une application cliente;
	\item choix d'une structure de retour des informations pour une application cliente;
	\item faire un lien avec l'emploi du temps des diff\'erentes salles sous surveillance.

\end{itemize}

\subsection{Contraintes techniques}

Deux des principales contraintes du cahier des charges sont l'utilisation de logiciels libres et du langage de d\'eveloppement Java, tout en me laissant un maximum de libert\'e dans les autres choix.

Durant le stage, un ordinateur m'a \'et\'e fourni avec un libre choix sur le syst\`eme d'exploitation.
De ce fait j'ai opt\'e pour un Linux Mint 11 nomm\'e \textit{Katya}, que j'ai l'habitude d'utiliser.

Un autre ordinateur, lui contenant un Debian 6.0.5 nomm\'e \textit{Squeeze}, a \'et\'e mis \`a ma disposition en tant que serveur distant h\'ebergeant le service Web ainsi que les diff\'erents outils n\'ecessaires \`a son fonctionnement.
Le serveur distant contient le logiciel Nagios, le serveur Web permettant de faire fonctionner la derni\`ere version stable du service Web ainsi que le syst\`eme de gestion de bases de donn\'ees (SGBD).

Les tests \'etant en premier lieu r\'ealis\'es en local sur la machine de d\'eveloppement et ensuite, quand le fonctionnement \'etait garanti, l'application \'etait d\'eploy\'ee sur le serveur distant.
Des renseignements suppl\'ementaires seront apport\'es au \S~\ref{section:gestionProjet}.


\clearpage